package cn.b.sky.admin.dao;

import cn.b.sky.admin.model.FunctionGroup;
import cn.b.sky.admin.model.condition.FunctionGroupCondition;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 
 * <strong>Title : FunctionGroupDao.java<br></strong>
 * <strong>Package : cn.b.sky.admin.dao<br></strong>
 * <strong>Description : </strong>功能组信息操作Dao接口<br> 
 * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
 * <p>
 * @author JunLin.Yang<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface FunctionGroupDao {

  /**
   * 
   * <strong>Title : selectFunctionGroupsByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询功能组集合<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param condition 功能组查询条件
   * @return 
   * List<FunctionGroup> 功能组集合
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<FunctionGroup> selectFunctionGroupsByCondition(@Param("condition") FunctionGroupCondition condition);

  /**
   * 
   * <strong>Title : getFunctionGroupByPK<br></strong>
   * <strong>Description : </strong>根据主键查询功能组对象<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   @Param("functionGroupCode")String functionGroupCode
   * @param functionGroupCode 功能组编号
   * @return
   * FunctionGroup 功能组对象
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public FunctionGroup getFunctionGroupByPK(@Param("functionGroupCode") String functionGroupCode);

  /**
  * 
  * <strong>Title : getFunctionGroupByCondition<br></strong>
  * <strong>Description : </strong>根据查询条件查询对应功能组对象<br> 
  * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
  * <p>
  * @param condition 功能组查询条件
  * @return
  * FunctionGroup 功能组对象
  * @throws 
  * @author JunLin.Yang<br>
  * @version <strong>v1.0.0</strong><br>
  * <br>
  * <strong>修改历史:</strong><br>
  * 修改人 | 修改日期 | 修改描述<br>
  * -------------------------------------------<br>
  * <br>
  * <br>
  */
  public FunctionGroup getFunctionGroupByCondition(@Param("condition") FunctionGroupCondition condition);

  /**
   * 
   * <strong>Title : getFunctionGroupsCountByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询相应的记录数<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param condition 功能组查询条件
   * @return
   * long 数据记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public long getFunctionGroupsCountByCondition(@Param("condition") FunctionGroupCondition condition);

  /**
   * 
   * <strong>Title : insertFunctionGroup<br></strong>
   * <strong>Description : </strong>新增功能组数据<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param data 功能组
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertFunctionGroup(FunctionGroup data);

  /**
   * 
   * <strong>Title : updateFunctionGroup<br></strong>
   * <strong>Description : </strong>更新功能组数据<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param data 功能组
   * int 更新的记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int updateFunctionGroup(FunctionGroup data);

  /**
   * 
   * <strong>Title : deleteFunctionGroupByPK<br></strong>
   * <strong>Description : </strong>根据主键信息删除功能组数据<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param functionGroupCode 主键信息
   * int 删除的记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int deleteFunctionGroupByPK(@Param("functionGroupCode") String functionGroupCode);

  /**
   * 
   * <strong>Title : deleteFunctionGroupByCondition<br></strong>
   * <strong>Description : </strong>根据查询对象删除功能组数据<br> 
   * <strong>Create on : 2016-6-7 上午11:36:02<br></strong>
   * <p>
   * @param condition 功能组查询对象
   * int 删除的记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int deleteFunctionGroupByCondition(@Param("condition") FunctionGroupCondition condition);

  /**
   * 
   * <strong>Title : getAllFunctionGroups<br></strong>
   * <strong>Description : </strong>查询所有的功能组<br> 
   * <strong>Create on : 2016年6月14日 上午9:12:53<br></strong>
   * <p>
   * @return
   * List<FunctionGroup>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<FunctionGroup> getAllFunctionGroups();

  /**
   * 
   * <strong>Title : getFunctionGroupsByCodes<br></strong>
   * <strong>Description : </strong>查询一组功能组<br> 
   * <strong>Create on : 2016年6月14日 上午9:13:14<br></strong>
   * <p>
   * @param groupCodes
   * @return
   * List<FunctionGroup>
   * @throws 
   * @author Yantao.Lu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<FunctionGroup> getFunctionGroupsByCodes(@Param("groupCodes") String[] groupCodes);

}
